package org.Iteracion4.presentacion;



import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.Insets;

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.BorderLayout;
import java.text.ParseException;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JFormattedTextField;
import javax.swing.text.MaskFormatter;
import javax.swing.JButton;

import org.Iteracion4.dominio.Usuario;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JPasswordField;


public class Nuevo_Usuario {

	JFrame frmRegistrarNuevoUsuario;
	private JPanel panel;
	private JLabel lblDni;
	private JLabel lblNombre;
	private JLabel lblApellidos;
	private JLabel lblSueldo;
	private JLabel lblContrasea;
	private JTextField txtNombre;
	private JTextField txtApellidos;
	private JTextField txtSueldo;
	private JPasswordField txtContrasena;
	private JLabel lblConfirmeContrasena;
	private JPasswordField txtConfirmacontrasena;
	private JFormattedTextField txtdni;
	private JButton btnAtras;
	private JButton btnRegistrar;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Nuevo_Usuario window = new Nuevo_Usuario();
					window.frmRegistrarNuevoUsuario.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public Nuevo_Usuario() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frmRegistrarNuevoUsuario = new JFrame();
		frmRegistrarNuevoUsuario.addWindowListener(new FrameWindowListener());
		frmRegistrarNuevoUsuario.setTitle("Registrar nuevo usuario");
		frmRegistrarNuevoUsuario.setBounds(100, 100, 503, 229);
		frmRegistrarNuevoUsuario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		{
			panel = new JPanel();
			frmRegistrarNuevoUsuario.getContentPane().add(panel, BorderLayout.CENTER);
			panel.setLayout(null);
			{
				lblDni = new JLabel("DNI");
				lblDni.setBounds(26, 31, 27, 14);
				panel.add(lblDni);
			}
			{
				lblNombre = new JLabel("Nombre");
				lblNombre.setBounds(26, 70, 46, 14);
				panel.add(lblNombre);
			}
			{
				lblApellidos = new JLabel("Apellidos");
				lblApellidos.setBounds(26, 106, 66, 14);
				panel.add(lblApellidos);
			}
			{
				lblSueldo = new JLabel("Sueldo");
				lblSueldo.setBounds(259, 31, 46, 14);
				panel.add(lblSueldo);
			}
			{
				lblContrasea = new JLabel("Contraseña");
				lblContrasea.setBounds(259, 70, 66, 14);
				panel.add(lblContrasea);
			}
			{
				txtNombre = new JTextField();
				txtNombre.setBounds(89, 67, 86, 20);
				panel.add(txtNombre);
				txtNombre.setColumns(10);
			}
			{
				txtApellidos = new JTextField();
				txtApellidos.setBounds(89, 103, 86, 20);
				panel.add(txtApellidos);
				txtApellidos.setColumns(10);
			}
			{
				txtSueldo = new JTextField();
				txtSueldo.setBounds(391, 28, 86, 20);
				panel.add(txtSueldo);
				txtSueldo.setColumns(10);
			}
			{
				txtContrasena = new JPasswordField();
				txtContrasena.setBounds(391, 67, 86, 20);
				panel.add(txtContrasena);
				txtContrasena.setColumns(10);
			}
			{
				lblConfirmeContrasena = new JLabel("Confirme Contraseña");
				lblConfirmeContrasena.setBounds(259, 106, 136, 14);
				panel.add(lblConfirmeContrasena);
			}
			{
				txtConfirmacontrasena = new JPasswordField();
				txtConfirmacontrasena.setBounds(391, 103, 86, 20);
				panel.add(txtConfirmacontrasena);
				txtConfirmacontrasena.setColumns(10);
			}
			{
				MaskFormatter formatoDNI = null;
				try {
					formatoDNI = new MaskFormatter("########'-U");
					formatoDNI.setPlaceholderCharacter('X');
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				txtdni = new JFormattedTextField(formatoDNI);
				txtdni.setBounds(89, 28, 86, 20);
				panel.add(txtdni);
			}
			{
				btnAtras = new JButton("Atras");
				btnAtras.addActionListener(new BtnAtrasActionListener());
				btnAtras.setBounds(388, 156, 89, 23);
				panel.add(btnAtras);
			}
			{
				btnRegistrar = new JButton("Registrar");
				btnRegistrar.addActionListener(new BtnRegistrarActionListener());
				btnRegistrar.setBounds(10, 156, 89, 23);
				panel.add(btnRegistrar);
			}
		}
	}
	private class BtnRegistrarActionListener implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			if(txtContrasena.getText().equals(txtConfirmacontrasena.getText())){
				Usuario usu;
				try {
					usu = new Usuario( txtdni.getText(),txtNombre.getText(), txtApellidos.getText(), Double.parseDouble(txtSueldo.getText()), txtContrasena.getText());
					usu.insertar();
					JOptionPane.showMessageDialog(frmRegistrarNuevoUsuario,"Usuario registrado correctamente.","Usuario registrado",JOptionPane.INFORMATION_MESSAGE);
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}else{
				JOptionPane.showMessageDialog(frmRegistrarNuevoUsuario,"Por favor, introduzca la misma contraña en ámbos campos","Aviso",JOptionPane.ERROR_MESSAGE);
			}
			
		}
	}
	private class BtnAtrasActionListener implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			frmRegistrarNuevoUsuario.setVisible(false);
		}
	}
	private class FrameWindowListener extends WindowAdapter {
		@Override
		public void windowClosing(WindowEvent arg0) {
			frmRegistrarNuevoUsuario.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
			if(JOptionPane.showConfirmDialog(frmRegistrarNuevoUsuario, "¿Esta seguro que desea salir de la aplicación? \n   Los cambios no guardados se perderán","ATENCION!",JOptionPane.OK_CANCEL_OPTION) == JOptionPane.YES_OPTION){
				System.exit(0);
			}
		}
	}
}
